namespace Test.ConsoleProgram.Algorithm.Solution
{
    [TestDescription("算法: 0922. 按奇偶排序数组 II")]
    public class No0922_SortArrayByParityII : AbsBaseTestItem
    {
        /*
        给定一个非负整数数组 A， A 中一半整数是奇数，一半整数是偶数。
        对数组进行排序，以便当 A[i] 为奇数时，i 也是奇数；当 A[i] 为偶数时， i 也是偶数。
        你可以返回任何满足上述条件的数组作为答案。
        提示：
            2 <= A.length <= 20000
            A.length % 2 == 0
            0 <= A[i] <= 1000
        */
        public override void OnTest()
        {
            Assert.TestExe(SortArrayByParityII,
                new int[] { 4, 2, 5, 7 },
                new int[] { 4, 5, 2, 7 },
                new int[] { 4, 7, 2, 5 },
                new int[] { 2, 5, 4, 7 },
                new int[] { 2, 7, 4, 5 });
        }

        public int[] SortArrayByParityII(int[] A)
        {
            int n = A.Length;
            int[] ans = new int[n];
            int i_two = 0;
            int i_one = 1;
            foreach (int x in A)
            {
                if (x % 2 == 0)
                {
                    ans[i_two] = x;
                    i_two += 2;
                }
                else
                {
                    ans[i_one] = x;
                    i_one += 2;
                }
            }
            return ans;
        }
    }
}
